home *** CD-ROM | disk | FTP | other *** search
/ Loadstar 94 / 094.d81 / unidir source < prev    next >
Text File  |  2022-08-26  |  7KB  |  738 lines

  1. open =$ffc0
  2. stop = $ffe1
  3. readst =$ffb7
  4. setlfs =$ffba
  5. setnam =$ffbd
  6. load =$ffd5
  7. getin =$ffe4
  8. clrchn =$ffcc
  9. close =$ffc3   ;a
  10. chrin =$ffcf
  11. chkout =$ffc9  ;x
  12. chkin =$ffc6   ;x
  13. plot =$fff0
  14. chrout =$ffd2
  15. color'pointer =243
  16. screen'line'pointer =209
  17. print'number =$bdcd ;x,a
  18. clear'line =59903
  19. background =53281
  20. border =53280
  21. unlisten =$ffae
  22. clall =$ffe7
  23. strout =$ab1e
  24.  
  25. .org $c000
  26. .mem
  27. .obj "@0:unidir c000"
  28. lda #0
  29. sta printer
  30. sta 53281
  31. sta 53280
  32. sta del
  33. sta cmd
  34. sta count
  35. sta blocks
  36. sta blocks+1
  37. lda #2
  38. jsr close
  39. lda #15
  40. jsr close
  41. jsr get'number
  42. sty device
  43. sta printer
  44. jsr get'number
  45. sty del
  46. lda #1
  47. ldx <iname
  48. ldy >iname
  49. jsr setnam
  50. lda #15
  51. ldx device
  52. ldy #15
  53. jsr setlfs
  54. jsr open
  55. jsr clrchn
  56.  
  57. check'cmd ldx #15
  58. jsr chkout
  59. ldy #0
  60. - lda make'error,y
  61. jsr chrout
  62. iny
  63. cpy #4
  64. bne -
  65.  
  66. jsr clrchn
  67. ldx #15
  68. jsr chkin
  69. ldy #0
  70. - jsr getin
  71. sta buffer,y
  72. iny
  73. cmp #13
  74. bne -
  75.  
  76. lda buffer
  77. cmp buffer+1
  78. bne +
  79. cmp "7"
  80. bne +
  81.  
  82. lda #1
  83. sta cmd
  84.  
  85. + ldx #15
  86. jsr chkout
  87. lda "i"
  88. jsr chrout
  89. lda #13
  90. jsr chrout
  91.  
  92. jsr clrchn
  93. lda #2
  94. ldx <name
  95. ldy >name
  96. jsr setnam
  97. lda #2
  98. ldx device
  99. ldy #2
  100. jsr setlfs
  101. jsr open
  102.  
  103. lda printer
  104. beq begin
  105. lda #4
  106. jsr close
  107. lda #0
  108. tay
  109. tax
  110. jsr setnam
  111. lda #4
  112. ldx #4
  113. ldy #7
  114. jsr setlfs
  115. jsr open
  116.  
  117. begin jsr fill'buffer
  118. lda #13
  119. sta 646
  120. lda buffer+2
  121. sta drive'type
  122. cmp #65
  123. bne +
  124. lda <floppy
  125. ldy >floppy
  126. jsr strout
  127. lda buffer+3
  128. cmp #128
  129. bne print'single
  130. lda <double
  131. ldy >double
  132. jsr strout
  133. jmp get'header
  134.  
  135. print'single lda <single
  136. ldy >single
  137. jsr strout
  138. jmp get'header
  139.  
  140. + cmp #68
  141. bne +
  142. lda <threed
  143. ldy >threed
  144. jsr strout
  145. jmp get'header
  146.  
  147. + cmp #72
  148. bne +
  149. lda <hdname
  150. ldy >hdname
  151. jsr strout
  152. lda #0
  153. ldy #34
  154. - ora buffer,y
  155. iny
  156. cpy #39
  157. bne -
  158. cmp #0
  159. beq print'root
  160.  
  161. lda <subdir
  162. ldy >subdir
  163. jsr strout
  164. jmp get'header
  165.  
  166. print'root lda <root
  167. ldy >root
  168. jsr strout
  169. jmp get'header
  170.  
  171. + lda <unknown
  172. ldy >unknown
  173. jsr strout
  174.  
  175. get'header lda #13
  176. jsr chrout
  177. lda drive'type
  178. cmp "h"
  179. beq +
  180.  
  181. lda cmd
  182. beq +
  183.  
  184. lda <mode
  185. ldy >mode
  186. jsr strout
  187.  
  188. + lda #13
  189. sta 646
  190. lda buffer+2
  191. cmp #65
  192. bne +
  193. ldy #144
  194. bne over
  195.  
  196. + ldy #4
  197.  
  198. over lda #1
  199. sta 199
  200. lda #34
  201. jsr chrout
  202. ldx #0
  203. - lda buffer,y
  204. jsr chrout
  205. iny
  206. inx
  207. cpx #16
  208. bne -
  209.  
  210. lda #34
  211. jsr chrout
  212. - lda buffer,y
  213. beq +
  214. jsr chrout
  215. iny
  216. bne -
  217.  
  218. + ldy #9
  219. lda " "
  220. - jsr chrout
  221. dey
  222. bpl -
  223.  
  224. lda #13
  225. jsr chrout
  226.  
  227. lda <explain
  228. ldy >explain
  229. jsr strout
  230.  
  231. get'file'entries jsr fill'buffer
  232. lda #1
  233. sta 646
  234. lda #0
  235. sta count
  236. lda <buffer+2
  237. sta 251
  238. lda >buffer+2
  239. sta 252
  240.  
  241. get'blocks jsr stop
  242. bne +
  243. jmp quit
  244.  + lda del
  245. bne +
  246. ldy #0
  247. lda (251),y
  248. bne +
  249. jmp next'file
  250.  
  251. +  lda #14
  252. sta 646
  253. lda <line
  254. ldy >line
  255. jsr strout
  256. lda #1
  257. sta 646
  258. ldy #1
  259. lda (251),y
  260. bne +
  261.  
  262. jmp quit
  263.  
  264. + ldy #28
  265. lda (251),y
  266. sta temp'blocks
  267. tax
  268. iny
  269. lda (251),y
  270. sta temp'blocks+1
  271. jsr $bdcd
  272. sty temp
  273.  
  274. ldy #0
  275. lda (251),y
  276. beq +
  277.  
  278. lda temp'blocks
  279. clc
  280. adc blocks
  281. sta blocks
  282. lda temp'blocks+1
  283. adc blocks+1
  284. sta blocks+1
  285.  
  286. + ldy temp
  287. lda #6
  288. sta cols
  289. jsr tab
  290.  
  291. get'track ldy #1
  292. lda (251),y
  293. tax
  294. lda #0
  295. jsr $bdcd
  296.  
  297. lda #3
  298. sta cols
  299. jsr tab
  300.  
  301. get'sector ldy #2
  302. lda (251),y
  303. tax
  304. lda #0
  305. jsr $bdcd
  306.  
  307. lda #3
  308. sta cols
  309. jsr tab
  310.  
  311. get'filename lda #34
  312. jsr chrout
  313. ldy #3
  314. - lda (251),y
  315. ldx #1
  316. sta 212
  317. cmp " "
  318. bne +
  319. lda " "
  320. + jsr chrout
  321. iny
  322. cpy #19
  323. bne -
  324. lda #0
  325. sta 212
  326.  
  327. lda #34
  328. jsr chrout
  329.  
  330. ldy #2
  331. lda " "
  332. - jsr chrout
  333. dey
  334. bpl -
  335.  
  336.  
  337. get'type ldy #0
  338. lda (251),y
  339. sta temp
  340. and #127
  341. and #191
  342. and #159
  343. cmp #7
  344. bcc +
  345. lda #7
  346. + sta type
  347. asl
  348. clc
  349. adc type
  350.  
  351. tay
  352. ldx #0
  353. - lda types,y
  354. jsr chrout
  355. iny
  356. inx
  357. cpx #3
  358. bne -
  359.  
  360. lda type
  361. beq +
  362. lda temp
  363. bmi +
  364.  
  365. lda "*"
  366. jsr chrout
  367.  
  368. + lda temp
  369. cmp #192
  370. bcc +
  371. lda "<"
  372. jsr chrout
  373.  
  374. + lda #13
  375. jsr chrout
  376.  
  377. get'date lda #3
  378. sta 646
  379. lda #0
  380. sta emulation
  381. ldy #23
  382. - ora (251),y
  383. iny
  384. cpy #26
  385. bne -
  386. cmp #0
  387. bne +
  388. jmp check'rel
  389.  
  390. + sta emulation
  391. lda #14
  392. sta cols
  393. ldy #0
  394. jsr tab
  395. lda <creation
  396. ldy >creation
  397. jsr strout
  398.  
  399. ldy #24
  400. lda (251),y
  401. tax
  402. cmp #10
  403. bcs +
  404. lda "0"
  405. jsr chrout
  406. + lda #0
  407. jsr $bdcd
  408. lda "/"
  409. jsr chrout
  410. ldy #25
  411. lda (251),y
  412. tax
  413. cmp #10
  414. bcs +
  415. lda "0"
  416. jsr chrout
  417. + lda #0
  418. jsr $bdcd
  419. lda "/"
  420. jsr chrout
  421. ldy #23
  422. lda (251),y
  423. tax
  424. cmp #10
  425. bcs +
  426. lda "0"
  427. jsr chrout
  428. + lda #0
  429. jsr $bdcd
  430. lda " "
  431. jsr chrout
  432.  
  433. lda #0
  434. sta temp
  435. ldy #26
  436. lda (251),y
  437. cmp #13
  438. bcc +
  439. sta temp
  440. sec
  441. sbc #12
  442.  
  443. + tax
  444. cmp #10
  445. bcs +
  446. lda "0"
  447. jsr chrout
  448. + lda #0
  449. jsr $bdcd
  450. lda ":"
  451. jsr chrout
  452. ldy #27
  453. lda (251),y
  454. tax
  455. cmp #10
  456. bcs +
  457. lda "0"
  458. jsr chrout
  459.  
  460. + lda #0
  461. jsr $bdcd
  462. lda "a"
  463. ldx temp
  464. beq +
  465. lda "p"
  466. + jsr chrout
  467. lda #13
  468. jsr chrout
  469.  
  470. check'rel lda #7
  471. sta 646
  472. lda type
  473. cmp #4
  474. beq +
  475. jmp check'replace
  476.  
  477. + ldy #0
  478. lda #6
  479. sta cols
  480. jsr tab
  481.  
  482. get'rtrack ldy #19
  483. lda (251),y
  484. tax
  485. lda #0
  486. jsr $bdcd
  487.  
  488. lda #3
  489. sta cols
  490. jsr tab
  491.  
  492. get'rsector ldy #20
  493. lda (251),y
  494. tax
  495. lda #0
  496. jsr $bdcd
  497.  
  498. lda #3
  499. sta cols
  500. jsr tab
  501.  
  502. lda <side'sector
  503. ldy >side'sector
  504. jsr strout
  505.  
  506. ldy #0
  507. lda #6
  508. sta cols
  509. jsr tab
  510.  
  511. get'rec'length ldy #21
  512. lda (251),y
  513. tax
  514. lda #0
  515. jsr $bdcd
  516.  
  517. lda #7
  518. sta cols
  519. jsr tab
  520.  
  521. lda <length
  522. ldy >length
  523. jsr strout
  524. jmp next'file
  525.  
  526. check'replace lda #10
  527. sta 646
  528. lda emulation
  529. bne next'file
  530. lda drive'type
  531. cmp "h"
  532. bne +
  533. jmp next'file
  534.  
  535. + ldy #26
  536. lda (251),y
  537. bne +
  538. jmp next'file
  539.  
  540. + ldy #0
  541. lda #6
  542. sta cols
  543. jsr tab
  544.  
  545. get'srtrack ldy #26
  546. lda (251),y
  547. tax
  548. lda #0
  549. jsr $bdcd
  550.  
  551. lda #3
  552. sta cols
  553. jsr tab
  554.  
  555. get'srsector ldy #27
  556. lda (251),y
  557. tax
  558. lda #0
  559. jsr $bdcd
  560.  
  561. lda #3
  562. sta cols
  563. jsr tab
  564.  
  565. lda <replaced
  566. ldy >replaced
  567. jsr strout
  568.  
  569.  
  570. next'file lda 653
  571. bne next'file
  572. inc count
  573. lda count
  574. cmp #8
  575. beq +
  576.  
  577. lda #32
  578. clc
  579. adc 251
  580. sta 251
  581. lda #0
  582. adc 252
  583. sta 252
  584. jmp get'blocks
  585.  
  586. + lda eof
  587. bne quit
  588. jmp get'file'entries
  589.  
  590. quit lda #1
  591. sta 646
  592. lda #2
  593. jsr close
  594. lda #15
  595. jsr close
  596. jsr clrchn
  597.  
  598. lda #15
  599. ldx <block'name
  600. ldy >block'name
  601. jsr setnam
  602. lda #2
  603. ldx device
  604. ldy #0
  605. jsr setlfs
  606. jsr open
  607. jsr clrchn
  608. ldx #2
  609. jsr chkin
  610.  
  611. ldy #33
  612. - jsr getin
  613. dey
  614. bpl -
  615.  
  616. jsr getin
  617. sta temp
  618. jsr getin
  619. sta temp+1
  620.  
  621. lda printer
  622. beq +
  623. jsr clrchn
  624. ldx #4
  625. jsr chkout
  626.  
  627. + lda #13
  628. jsr chrout
  629. ldx temp
  630. lda temp+1
  631. jsr $bdcd
  632.  
  633. lda <free
  634. ldy >free
  635. jsr strout
  636.  
  637. lda #13
  638. jsr chrout
  639. ldx blocks
  640. lda blocks+1
  641. jsr $bdcd
  642.  
  643. lda <used
  644. ldy >used
  645. jsr strout
  646. jsr clrchn
  647.  
  648. lda #4
  649. jsr close
  650. lda #2
  651. jsr close
  652. rts
  653.  
  654. fill'buffer jsr clrchn
  655. ldx #2
  656. jsr chkin
  657.  
  658. ldy #0
  659. - jsr getin
  660. sta buffer+2,y
  661. iny
  662. cpy #254
  663. bne -
  664. jsr readst
  665. and #64
  666. sta eof
  667. jsr clrchn
  668. lda printer
  669. beq +
  670. ldx #4
  671. jsr chkout
  672. + rts
  673.  
  674. ;**** get number from BASIC ****
  675.  
  676. get'number jsr $aefd
  677. jsr $ad8a
  678. jsr $b7f7
  679. rts
  680.  
  681. ;***** get string from BASIC ****
  682.  
  683. get'string jsr $aefd
  684. jsr $ad9e
  685. jsr $b6a3
  686.  
  687. ldx $22
  688. ldy $23
  689. rts
  690.  
  691. tab sty temp; length of number string
  692. lda cols
  693. sec
  694. sbc temp
  695. tay
  696. lda " "
  697. - jsr chrout
  698. dey
  699. bpl -
  700. rts
  701.  
  702. name .asc "$:"
  703. device .byt 0
  704. ;buffer .buf 256
  705. floppy .asc "1541/71 disk":.byt 0
  706. single .asc " 1-sided (664 blocks)":.byt 0
  707. double .asc " 2-sided (1328 blocks)":.byt 0
  708. threed .asc "1581 disk (3160 blocks)":.byt 0
  709. hdname .asc "cmd native partition":.byt 0
  710. root .asc " (root)":.byt 0
  711. unknown .asc "unknown":.byt 0
  712. subdir .asc " (subdirectory)":.byt 0
  713. mode .asc "cmd emulation mode partition":.byt 13,0
  714. explain .asc "blocks trk sec filename            type":.byt 13,0
  715. line    .asc "---------------------------------------":.byt 13,0
  716. creation .asc "created: ":.byt 0
  717. side'sector .asc "<-- side sector t/s":.byt 13,0
  718. length .asc "<-- record length":.byt 13,0
  719. replaced .asc "<-- botched save/open@":.byt 13,0
  720. iname .asc "i"
  721. block'name .asc "$:JeFfBeGo0d!\'"
  722. free .asc "  blocks free.":.byt 13,0
  723. used .asc "  blocks allocated by files.":.byt 13,0
  724. blocks .word 0
  725. drive'type .byt 0
  726. count .byt 0
  727. types .asc "delseqprgusrrelcbmdir???"
  728. temp .byt 0
  729. cols .byt 0
  730. type .byt 0
  731. emulation .byt 0
  732. printer .byt 0
  733. eof .byt 0
  734. make'error .asc "cp0":.byt 13
  735. cmd .byt 0
  736. del .byt 0
  737. temp'blocks .buf 2
  738. buffer =*